using JT808Protocol.Common;
using JT808Protocol.Models.Enums;
using System;

namespace JT808Protocol.Models.BodyParserStrategy
{
    public class ItemAvResource
    {
        /// <summary>
        /// 逻辑通道号
        /// </summary>
        public byte ChannelSn;

        /// <summary>
        /// 开始时间
        /// </summary>
        public DateTime StartTime;

        /// <summary>
        /// 结束时间
        /// </summary>
        public DateTime EndTime;

        /// <summary>
        /// 报警标志(64位)
        /// </summary>
        public byte[] AlarmStatus;

        /// <summary>
        /// 音视频类型（0 音视频，1 音频，2 视频）
        /// </summary>
        public EnumAvType AvType;

        /// <summary>
        /// 码流类型,1 主码流，2 子码流
        /// </summary>
        public byte CodeStreamType;

        /// <summary>
        /// 存储器类型，1 主存储器，2 灾备存储器
        /// </summary>
        public byte StorageType;

        /// <summary>
        /// 文件大小
        /// </summary>
        public uint FileSize;

        /// <summary>
        /// todo:解析 0x1205 资源项
        /// </summary>
        /// <summary>
        /// todo:解析 0x1205 资源项
        /// </summary>
        public void ReadBuffer(ref ReadOnlySpan<byte> source, int startIndex)
        {
            var index = startIndex;

            //逻辑通道号
            ChannelSn = source[index++];

            //开始时间
            StartTime = ParseHelper.BcdTo1078Datetime(ref source, index);

            //结束时间
            index += 6;
            EndTime = ParseHelper.BcdTo1078Datetime(ref source, index);

            //报警标志,不解析
            index += 6;

            //音视频类型
            index += 8;
            AvType = (EnumAvType)source[index++];

            //码流类型
            CodeStreamType = source[index++];

            //存储器类型
            StorageType = source[index++];

            //文件大小
            FileSize = ParseHelper.Uint32(ref source, index);
            index += 4;
        }
    }
}